package java_thinking.unit_21._21_16;

import net.jcip.annotations.ThreadSafe;

import java.util.HashMap;
import java.util.Map;

/**
 * @Desc:   16-8 不可变对象的初始化安全性；
 *              1 要注意，对 SafeStates 细微的修改都可能破坏它的线程安全性，
 *                如果 states 不是 final 类型，或者在出构造函数以外的其他地方能修改 states
 *                那么初始化安全性将无法确保在缺少同步的情况下安全访问 SafeStates
 * @author: cww
 * @DateTime: 2019-06-30 22:37
 */
@ThreadSafe
public class SafeStates {
    private final Map<String, String> states;

    public SafeStates() {
        this.states = new HashMap<>();
        states.put("alaska", "AK");
        states.put("alabama", "AL");
        /*...*/
        states.put("wyoming", "WY");
    }

    public String getAbbreviation(String s) {
        return states.get(s);
    }
}
